/*
 * Copyright (C) 拾光分享网 
 * All rights reserved, Designed By www.hiai.top.
 * Email：goodsking@163.com.
 * Version：V1.0.2(20230701).
 */
package top.hiai.my.article;

import com.jfinal.aop.Before;
import com.jfinal.kit.Ret;

import top.hiai.common.interceptor.FrontAuthInterceptor;
import top.hiai.common.model.Article;
import top.hiai.common.util.RestTime;
import top.hiai.config.BaseController;
import top.hiai.user.index.IndexUserService;

/**
* @Author www.hiai.top
* @Email  goodsking@163.com
* @Message 更多资源尽在www.hiai.top
* @Introduction 类的介绍：个人空间，文章编辑，发布控制器
*/
@Before(FrontAuthInterceptor.class)
public class MyArticleController extends BaseController {
	
	private MyArticleService myArticleService = new MyArticleService();
	
	/**
	 * 渲染个人中心发表文章页面
	 */
	public void index(){
		//遍历分类的列表
		setAttr("commentsList", myArticleService.commentsList());
		render("articleAdd.html");
	}
	/**
	 * 渲染用户的所有的文章页面
	 */
	public void list(){
		int accountId = getLoginAccountId();
		setAttr("userArticleList", IndexUserService.me.getUserArticleListPage(getParaToInt("p", 1),limtCount,accountId));
		setAttr("seoTitle", "我的文章");
		render("articleList.html");
		//renderJson();
	}
	/**
	 * 发表文章保存验证
	 * 验证内容不能为空，不能有敏感词
	 * 发布的时间调整，规定的时间内不能发表文章
	 */
	@Before({MyArticleValidator.class, RestTime.class})
	public void save() {
		myArticleService.userSaveArticle(getLoginAccountId(), getModel(Article.class));
		renderJson(Ret.ok());
	}
	
	/**
	 * 用户删除自己的文章
	 */
	public void delete() {
		myArticleService.myDeleteArticle(getLoginAccountId(), getParaToInt("aid"));
		redirect("/my/article/list");
	}
	
	/**
	 * 用户修改自己的文章
	 */
	public void edit(){
		setAttr("article", myArticleService.articlefindById(getParaToInt("aid")));
		//遍历分类的列表
		setAttr("commentsList", myArticleService.commentsList());
		render("articleEdit.html");
	}
	/**
	 * 修改确认
	 */
	@Before({MyArticleValidator.class, RestTime.class})
	public void update() {
		myArticleService.articleUpdate(getLoginAccountId(), getModel(Article.class));
		renderJson(Ret.ok());
	}
	
	/**
	 * 遍历出用户发表的文章的评论
	 */
	public void replyList(){
		/**
		 * 文章评论信息
		 * state 1是显示  0是不显示
		 * 用户自己可以删除自己的评论信息，管理员可以设置显示和删除
		 * */
		setAttr("myArticleReply", myArticleService.myArticleReplyPage(getParaToInt("p", 1),limtCount,getLoginAccountId()));
		render("articleReplyList.html");
	}
	
	/**
	 * 用户删除自己文章下面的评论
	 */
	public void replyDelete(){
		myArticleService.myDeleteArticleReply(getParaToInt("rid"),getParaToInt("aid"));
		redirect("/my/article/replyList");
	}
	
}